<?php

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

class profesorModel extends CI_Model {

    function __construct() {
        // Call the Model constructor
        parent::__construct();
    }
    
     public function create($nombre, $carrera,$telefono, $mail, $facebook, $direccion, $enDomicilio, $enFacultad, $puntosBase){
        $sql = "INSERT INTO profesores (nombre,carrera,telefono,mail,facebook,direccion,enDomicilio, enFacultad, puntos_base) 
        VALUES ('$nombre', '$carrera','$telefono', '$mail', '$facebook', '$direccion', $enDomicilio, $enFacultad, $puntosBase)";

        $this->db->query($sql);
        if($this->db->affected_rows() > 0){
            return $this->db->insert_id();
        }else{
            return $this->db->affected_rows();
        }
    }    
    
    public function update($id,$nombre, $carrera,$telefono, $mail, $facebook, $direccion, $enDomicilio, $enFacultad, $puntosBase ){
         $sql = "UPDATE profesores SET nombre = '$nombre',carrera = $carrera,telefono = '$telefono', mail = '$mail', facebook = '$facebook',direccion = '$direccion', 
             enDomicilio = $enDomicilio, enFacultad = $enFacultad, puntos_base = $puntosBase
        WHERE id = $id";
         
        $this->db->query($sql);
        
        if($this->db->affected_rows() > 0){
            return 1;
        }else{
            return 0;
        }
       
    }
    
    public function setBarrioAD($profesor, $barrio){
         $sql = "INSERT INTO profesor_barrio_ad (id, profesor,barrio) 
        VALUES (DEFAULT, $profesor, $barrio)";

        $this->db->query($sql);

        return $this->db->affected_rows();
    }
    
     public function setPartidoAD($profesor, $partido){
         $sql = "INSERT INTO profesor_partido_ad (id, profesor,partido) 
        VALUES (DEFAULT,  $profesor, $partido)";

        $this->db->query($sql);

        return $this->db->affected_rows();
    }
    
     public function setMateria($profesor, $materia){
         $sql = "INSERT INTO materias_profesores (id, profesor,materia) 
        VALUES (DEFAULT, $profesor, $materia)";

        $this->db->query($sql);

        return $this->db->affected_rows();
    }
    
    public function setComuna($profesor, $comuna){
         $sql = "INSERT INTO profesor_barrio_ad (profesor, barrio) "
                 . "SELECT $profesor, id FROM barrios WHERE comuna =$comuna";
        
        $this->db->query($sql);

        return $this->db->affected_rows();
    }

    public function getAll(){
         $sql = "SELECT prof.id, prof.nombre, prof.telefono, prof.facebook, prof.mail, ((select count(1) from pedidos where profesor = prof.id) + prof.puntos_base) asignadas, "
                 . "(select max(fecha_asignada) as ultima from pedidos p where profesor = prof.id) as ultima_asignada "  
                 . "FROM profesores prof "
                . " Order by prof.nombre ";
        
        $query = $this->db->query($sql);
        
        return $query->result();
    }
    
    public function getForList($id){
         $sql = "SELECT prof.id, prof.nombre, prof.telefono, prof.facebook, prof.mail, ((select count(1) from pedidos where profesor = prof.id) + prof.puntos_base) asignadas, "
                 . "(select max(fecha_asignada) as ultima from pedidos p where profesor = prof.id) as ultima_asignada "  
                 . "FROM profesores prof WHERE prof.id = $id "
                . " Order by prof.nombre ";
        
        $query = $this->db->query($sql);
        
        return $query->result();
    }
    
    public function get($id){
        $this->db->where('id', $id);
        //here we select every clolumn of the table
        $q = $this->db->get('profesores');
        $data = $q->result_array();

        return $data[0];
    }
    
    
    
     public function getMaterias($profesorId){
        $this->db->where('profesor', $profesorId);
        //here we select every clolumn of the table
        $q = $this->db->get('materias_profesores');
        return$q->result();
    }
    
    public function getBarriosAD($profesorId){
        $this->db->where('profesor', $profesorId);
        //here we select every clolumn of the table
        $q = $this->db->get('profesor_barrio_ad');
        return $q->result();
    }
    
    public function existBarrioAD($profesorId, $barrio){
        $this->db->where('profesor', $profesorId);
        $this->db->where('barrio', $barrio);
        //here we select every clolumn of the table
        $q = $this->db->get('profesor_barrio_ad');
        return count($q->result()) > 0;
    }
    
    public function getPartidosAD($profesorId){
        $this->db->where('profesor', $profesorId);
        //here we select every clolumn of the table
        $q = $this->db->get('profesor_partido_ad');
        return $q->result();
    }
    
    public function getComunasAD($profesorId){
          $sql = "SELECT numero
FROM comunas
WHERE (SELECT COUNT(1) FROM barrios b WHERE b.comuna = numero) = 
(SELECT COUNT(1) FROM profesor_barrio_ad pba, barrios b WHERE b.comuna = numero AND pba.profesor = $profesorId AND pba.barrio = b.id)";

        $query = $this->db->query($sql);
        $data = $query->result();

        return $data;
    }
    
    public function delete($id){
        $this->db->where('id', $id);
        $this->db->delete('profesores'); 
        
        $this->db->where('profesor', $id);
        $q = $this->db->delete('profesor_barrio_ad');
        
        $this->db->where('profesor', $id);
        $q = $this->db->delete('profesor_partido_ad');
        
        $this->db->where('profesor', $id);
        $q = $this->db->delete('materias_profesores');
        return $q;
    }
    
    public function deleteBarriosAD($id){
        $this->db->where('profesor', $id);
        return $this->db->delete('profesor_barrio_ad'); 
    }
    
    public function deletePartidosAD($id){
        $this->db->where('profesor', $id);
        return $this->db->delete('profesor_partido_ad'); 
    }
    
    public function deleteMaterias($id){
        $this->db->where('profesor', $id);
        return $this->db->delete('materias_profesores'); 
    }
}
